#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <time.h>
#include <string.h>

/** @fn dev_debug
* @brief   		设备打印
* @param[in]  	level     -- 打印等级
* @param[in]	file_name -- 打印的文件名
* @param[in]    line      -- 打印行
* @param[in]    func_name -- 打印函数名
* @param[in]    tag       -- 打印标签
* @param[in]    format    -- 打印文本
* @param[out]  	N/A
* @return  		N/A
*/
void dev_debug(const char* level, const char *file_name, unsigned int line,
				const char *func_name, const char *format, ...)
{
	struct timespec current_time;
	struct tm format_time;
	va_list arglist;
	memset(&current_time, 0, sizeof(current_time));
	clock_gettime(CLOCK_REALTIME, &current_time);
	localtime_r(&current_time.tv_sec, &format_time);

	// 打印标签头
	printf("[%02d.%02d.%02d %02d:%02d:%02d.%03ld][%s][%s %s %d]:",
		format_time.tm_year+1900,
		format_time.tm_mon+1,
		format_time.tm_mday,
		format_time.tm_hour,
		format_time.tm_min,
		format_time.tm_sec,
		current_time.tv_nsec/1000000,
		level,
		file_name,
		func_name,
		line
		);

	// 打印传入的参数
	va_start(arglist, format);
	vprintf(format, arglist);
	va_end(arglist);

	// 换行
	printf("\r\n");
}

